<!DOCTYPE html>
<html>
<head>
	<title></title>
	<link rel="stylesheet" type="text/css" href="../公用CSS文件/all.css" />
	<meta charset="utf-8">
	<script type="text/javascript" src="../js/jquery.min.js"></script> 	<script type="text/javascript" src="../js/js.js"></script>
</head>
<body>

<div class="dt">Curl概念</div>
<ul>
	<li>curl是在命令行下工作模拟浏览器向url地址请求数据的工具</li>
</ul>

<div class="dt">Curl请求webservices</div>
<ul>
	<li><a href="http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getWeatherbyCityName?theCityName=北京">web服务地址</a></li>
	<li>webservices请求回来的数据是XML数据，可以使用SimpleXMLElement类下的asXML方法存储为XML文件，该方法传入路径</li>
</ul>


<div class="dt">Curl相关函数</div>
<ul>

	<div class="ltable showimg">常用curl函数</div>
	<table class="img">
		<tr>
			<th>函数</th><th>作用</th><th>参数</th><th>返回值</th>
		</tr>
		<tr>
			<td>curl_init</td>
			<td>初始化curl请求</td>
			<td>str请求的url地址(也可不传然后通过curl_setopt函数设置)</td>
			<td>参数正确返回资源，错误返回null并抛出错误</td>
		</tr>
		<tr>
			<td>curl_setopt</td>
			<td>为curl请求设置参数</td>
			<td>资源句柄 设置的参数名 设置的值</td>
			<td>设置成功返回true，失败返回false</td>
		</tr>
		<tr>
			<td>curl_exec</td>
			<td>执行curl请求</td>
			<td>资源句柄</td>
			<td>如果CUROT_RETURNTRANSFER设置为以return方式运行(true)返回请求结果，否则返回布尔值</td>
		</tr>
		<tr>
			<td>curl_close</td>
			<td>关闭curl连接</td>
			<td>资源句柄</td>
			<td>布尔值</td>
		</tr>
		<tr>
			<td>curl_getinfo</td>
			<td>获取最后一次连接所传输的数据</td>
			<td>资源句柄  【指定获取的curlopt选项】</td>
			<td>指定第二参数为字符串，否则为数组</td>
		</tr>
		<tr>
			<td>curl_error</td>
			<td>获取curl使用本身的错误</td>
			<td>资源句柄</td>
			<td>字符串，为错误字符</td>
		</tr>
	</table>

	<div class="ltable showimg">curl_setopt基础参数</div>
	<div  class="img">
		<table>
			<tr>
				<th>参数</th><th>值</th><td>意义</td>
			</tr>
			<tr>
				<td>CURLOPT_URL</td><td>url地址</td><td>设置curl请求的地址</td>
			</tr>
			<tr>
				<td>CURLOPT_RETURNTRANSFER</td>
				<td>布尔值=false</td>
				<td>以return还是transfer，transfer意为转移，这里的意思是直接将内容迁移至此，也就是直接输出，默认false输出</td>
			</tr>
			<tr>
				<td>CURLOPT_POST</td>
				<td>布尔值=false</td>
				<td>是否已post方式请求数据</td>
			</tr>
			<tr>
				<td>CURLOPT_POSTFIELDS</td>
				<td>数组</td>
				<td>设置了进行post请求后设置post过去的参数</td>
			</tr>
			<tr>
				<td>CURLOPT_TIMEOUT</td>
				<td>int</td>
				<td>设置curl超时时间</td>
			</tr>
		</table>
		<li>get方式请求的参数一般直接拼到地址栏中常用http_build_query函数转换，curl默认是以get方式请求数据的</li>
	</div>	

	<div class="ltable showimg">http协议额外参数</div>
	<div  class="img">
		<table>
			<tr>
				<th>参数</th><th>值</th><td>意义</td>
			</tr>
			<tr>
				<td>CURLOPT_COOKIE</td>
				<td>cookie字符串表达形式</td>
				<td>向请求地址发送的cookie信息</td>
			</tr>
			<tr>
				<td>CURLOPT_HTTPHEADER</td>
				<td>字符串的header头</td>
				<td>设置HTTP请求的header头（一般不必要）</td>
			</tr>
			<tr>
				<td>CURLOPT_HEADER</td>
				<td>布尔值</td>
				<td>获取结果时是否获取响应的header头</td>
			</tr>
		</table>
	</div>

	<div class="ltable showimg">curl证书相关参数</div>
	<div class="img">
		<table>
			<tr>
				<th>参数</th><th>值</th><td>意义</td>
			</tr>
			<tr>
				<td>CURLOPT_SSL_VERIFYPEER</td>
				<td>布尔值</td>
				<td>是否进行对等数字证书验证(如果数字证书有问题https请求将会失败，这时候应该设置为false)</td>
			</tr>
			<tr>
				<td>CURLOPT_SSL_VERIFYHOST</td>
				<td>布尔值</td>
				<td>是否进行CN数字证书验证(如果数字证书有问题https请求将会失败，这时候应该设置为false)</td>
			</tr>
			<tr>
				<td>CURLOPT_SSLCERTTYPE</td>
				<td>字符串</td>
				<td>ssl证书类型，php一般使用pem证书</td>
			</tr>
			<tr>
				<td>CURLOPT_SSLCERT</td>
				<td>字符串</td>
				<td>ssl证书路径</td>
			</tr>
			<tr>
				<td>CURLOPT_SSLKEYTYPE</td>
				<td>字符串</td>
				<td>ssl秘钥类型，php一般使用pem秘钥</td>
			</tr>
			<tr>
				<td>CURLOPT_SSLKEY</td>
				<td>字符串</td>
				<td>ssl秘钥路径</td>
			</tr>
		</table>
	</div>

</ul>

<div class="dt">Curl上传文件</div>
<ul>
	<div class="ltable showimg">5.6版本及以下，使用@语法</div>
	<div class="img">
		<img src="img/curl使用@语法上传文件.png">
		<li>自5.5版本开始，逐渐废弃@语法，需要CURL_SAFE_UPLOAD选项为false才能开启，5.5默认开启，5.6默认不开启，5.6以后完全废弃</li>
	</div>

	<div class="ltable showimg">5.5版本及以后使用CURLFile类上传</div>
	<div class="img">
		<img src="img/CURLFile.jpg">
	</div>

</ul>





</body>
</html>